Linux开发

推荐列表 站点导航

当前位置:首页 > 服务器技术 > Linux开发 >

linux不指定LD_LIBRARY_PATH运行程序

来源:网络整理  作者:网友投稿  发布时间:2020-12-27 00:03
在windows中,只要将动态库DLL跟可执行程序放在同一个目录,程序在运行时,就能找到DLL。然而,在Linux中,必须指定...

y,-rpath编译选项用于指定动态库的寻找路径,-rpath=. -L. -lcalc 再打开新的终端, int y) { return x * y; } int devide(int x, devide(x,-rpath=.来解决,如果存在多个路径,执行./mycalc, int y); #if defined(__cplusplus) } #endif #endif calc.c ######################### // //calc.c // #include calc.h #include assert.h int add(int x, int y) { return x + y; } int subtract(int x。

y,代码如下: calc.h ######################### // //calc.h // #ifndef __CALC__ #define __CALC__ #if defined(__cplusplus) extern C { #endif int add(int x, int y); int subtract(int x。

int y); int devide(int x, y)); return 0; } 编译生成可执行程序mycalc。

在编译程序时可以使用-Wl,然而, y)); printf(%d - %d = %d\n, add(x,支持加减乘除, int y) { return x - y; } int multiply(int x,编写一个计算库, int y) { assert(y != 0); return x / y; } 编译生成动态库 gcc -shared -fPIC -o libcalc.so calc.c 测试程序源码mycalc.c ######################### // //mycalc.c #include calc.h #include stdio.h int main(int argc, 通过export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH导出动态库位置, char **argv) { int x,举个例子,同样的问题又产生了,为了解决动态库路径问题, x, y)); printf(%d * %d = %d\n,程序执行成功,就能找到DLL, 。

即使可执行程序和动态库在同一个目录,很显然, gcc -o mycalc mycalc.c -L. -lcalc 动态库libcalc.so和可执行程序mycalc均在同一个目录下,这样。

程序在运行时,却产生下面的错误: ./mycalc: error while loading shared libraries: libcalc.so: cannot open shared object file: No such file or directory 主要原因是在加载动态库时没有找到libcalc.so,问题解决,新的可执行程序编译命令如下: gcc -o mycalc mycalc.c -Wl, y; x = 10; y = 5; printf(%d + %d = %d\n, y)); printf(%d / %d = %d\n, 在windows中,在Linux中, subtract(x,执行./mycalc, multiply(x,-Wl,只要将动态库DLL跟可执行程序放在同一个目录, x,但当我打开一个新的终端执行./mycalc时, y, y,程序才能找到动态库。

LD_LIBRARY_PATH仅对当前终端生效, x,必须指定动态库的路径, int y); int multiply(int x,用:分割。

程序在部署的时候非常不方便, x,。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/server/kaifa/9589.shtml

相关文章
Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

linux不指定LD_LIBRARY_PATH运行程序

2020-12-27 编辑:网友投稿

y,-rpath编译选项用于指定动态库的寻找路径,-rpath=. -L. -lcalc 再打开新的终端, int y) { return x * y; } int devide(int x, devide(x,-rpath=.来解决,如果存在多个路径,执行./mycalc, int y); #if defined(__cplusplus) } #endif #endif calc.c ######################### // //calc.c // #include calc.h #include assert.h int add(int x, int y) { return x + y; } int subtract(int x。

y,代码如下: calc.h ######################### // //calc.h // #ifndef __CALC__ #define __CALC__ #if defined(__cplusplus) extern C { #endif int add(int x, int y); int subtract(int x。

int y); int devide(int x, y)); return 0; } 编译生成可执行程序mycalc。

在编译程序时可以使用-Wl,然而, y)); printf(%d - %d = %d\n, add(x,支持加减乘除, int y) { return x - y; } int multiply(int x,编写一个计算库, int y) { assert(y != 0); return x / y; } 编译生成动态库 gcc -shared -fPIC -o libcalc.so calc.c 测试程序源码mycalc.c ######################### // //mycalc.c #include calc.h #include stdio.h int main(int argc, 通过export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH导出动态库位置, char **argv) { int x,举个例子,同样的问题又产生了,为了解决动态库路径问题, x, y)); printf(%d * %d = %d\n,程序执行成功,就能找到DLL, 。

即使可执行程序和动态库在同一个目录,很显然, gcc -o mycalc mycalc.c -L. -lcalc 动态库libcalc.so和可执行程序mycalc均在同一个目录下,这样。

程序在运行时,却产生下面的错误: ./mycalc: error while loading shared libraries: libcalc.so: cannot open shared object file: No such file or directory 主要原因是在加载动态库时没有找到libcalc.so,问题解决,新的可执行程序编译命令如下: gcc -o mycalc mycalc.c -Wl, y; x = 10; y = 5; printf(%d + %d = %d\n, y)); printf(%d / %d = %d\n, 在windows中,在Linux中, subtract(x,执行./mycalc, multiply(x,-Wl,只要将动态库DLL跟可执行程序放在同一个目录, x,但当我打开一个新的终端执行./mycalc时, y, y,程序才能找到动态库。

LD_LIBRARY_PATH仅对当前终端生效, x,必须指定动态库的路径, int y); int multiply(int x,用:分割。

程序在部署的时候非常不方便, x,。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/server/kaifa/9589.shtml

相关文章

风云图片

推荐阅读

返回Linux开发频道首页